Configuration for multi-stage network fabrics

ABSTRACT

A method includes deploying a network device within a fabric having a management network by attaching the network device through the management network to a port of a role allocator, wherein the role allocator includes one or more ports designated as first level port connections and one or more other ports designated as second level port connections. If the deployed network device is attached to one of the ports designated as first level port connections, the deployed network device is configured as a first level device. If the deployed network device is attached to one of the ports designated as second level port connections, the deployed network device is configured as a second level device.

CROSS REFERENCE

This application is a continuation application of and claims priority toU.S. patent application Ser. No. 16/146,738 filed on Sep. 28, 2018,which is hereby incorporated by reference herein in its entirety.

TECHNICAL FIELD

This disclosure relates to computer networks.

BACKGROUND

A data center is a collection of interconnected computer servers andassociated components, housed in one or more facilities. In a typicaldata center, a large collection of interconnected servers providescomputing and/or storage capacity for execution of various applications.For example, a data center may comprise a facility that hostsapplications and services for subscribers, i.e., customers of datacenter. The data center may, for example, host all of the infrastructureequipment, such as networking and storage systems, redundant powersupplies, and environmental controls. In most data centers, clusters ofstorage systems and application servers are interconnected via ahigh-speed switch fabric provided by one or more tiers of physicalnetwork switches and routers. More sophisticated data centers provideinfrastructure spread throughout the world with subscriber supportequipment located in various physical hosting facilities.

Data centers are often made up of a large number of devices, includingboth servers and devices that form an Internet Protocol (IP) fabric. TheIP fabric may be represented as an underlay network having leaf andspine devices.

SUMMARY

In general, this disclosure describes techniques for networkconfiguration based on automatic topology discovery and configuration.In particular, network devices such as routers are configured toautomatically determine their place in the network and to provisionthemselves accordingly.

In one example, this disclosure describes a network device comprising: aplurality of network ports, each of the network ports capable of beingcoupled to a fabric; and processing circuitry configured to: establish anetwork connection through the fabric to one of a plurality of roleallocator ports of a role allocator, identify a role allocator port towhich the network device is connected over the network connection, andconfigure the network device based on the identified role allocatorport.

In another example, this disclosure describes a method comprisingdeploying a network device within a fabric having a management networkby attaching a port of the deployed network device through themanagement network to one of a plurality of ports of a role allocator;establishing a network connection through the fabric to one of aplurality of role allocator ports of a role allocator; identifying arole allocator port to which the network device is connected over thenetwork connection; and configuring the network device based on theidentified role allocator port.

As yet another example, this disclosure describes a non-transitorycomputer-readable storage medium has stored thereon instructions that,when executed, cause a processor of a network device to: establish anetwork connection through a management network within a fabric to oneof a plurality of role allocator ports of a role allocator; identify arole allocator port to which the network device is connected over thenetwork connection; and configure the network device based on theidentified role allocator port.

The details of one or more examples are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF DRAWINGS

FIGS. 1A and 1B are block diagrams illustrating networks having datacenters, in accordance with techniques of the disclosure.

FIG. 2 is a block diagram illustrating an example of a router thatimplements an automatic topology discovery and provisioning process, inaccordance with techniques of the disclosure.

FIG. 3 is a flowchart illustrating an example method for deployingnetwork devices in an IP fabric 118 according to the techniques of thisdisclosure.

FIG. 4 is a flowchart illustrating an example method for automaticallydetermining role information for network devices in an IP fabricaccording to the techniques of this disclosure.

FIG. 5 is a flowchart illustrating another example method forautomatically determining role information for network devices in an IPfabric according to the techniques of this disclosure.

DETAILED DESCRIPTION

As noted above, in a typical data center, a large collection ofinterconnected servers provides computing and/or storage capacity forexecution of various applications. Typically, the servers areinterconnected using switches configured in a Leaf and Spine topology.In some example approaches, the same network device may be used as aleaf node and as a spine node. It can, therefore, be difficult for amanagement device to discover the role of a switch added to the fabricof the data center. Hence, assignment of these roles may require manualintervention on the part of operators to assign such roles.Unfortunately, manual intervention can lead to misconfiguration;customer reported bugs are often configuration related.

FIGS. 1A and 1B are block diagrams illustrating networks having datacenters, in accordance with techniques of the disclosure. In the exampleapproaches of FIGS. 1A and 1B, network 100 includes a data center 102connected to customer devices 120. Data center 102 includes a set ofstorage systems and application servers 110A-110N (servers 110)interconnected via Internet protocol (IP) fabric 118, which may comprisea fabric provided by one or more tiers of physical network devices, suchas, for example, routers, gateways, switches, hubs, modems, bridges,repeaters, multiplexers, servers, virtual machines running on one ormore of the same, and other example network devices.

In general, data center 102 provides an operating environment forapplications and services for customer devices 120 coupled to the datacenter, e.g., by a service provider network (not shown). Data center 102may, for example, host infrastructure equipment, such as networking andstorage systems, redundant power supplies, and environmental controls.In some examples, a service provider network that couples customerdevices 120 to data center 102 may be coupled to one or more networksadministered by other providers, and may thus form part of a large-scalepublic network infrastructure, e.g., the Internet.

In some examples, data center 102 represents one of many geographicallydistributed network data centers. As illustrated in the exampleapproaches of FIGS. 1A and 1B, data center 102 may be a facility thatprovides network services for customers through customer devices 120.Customer devices 120 may include the devices of entities (such asenterprises and governments) and of individuals. For example, a networkdata center may host web services for both enterprises and end users.Other example services may include data storage, virtual privatenetworks, traffic engineering, file service, data mining, scientific- orsuper-computing, and so on. In some examples, data center 102 may beindividual network servers, network peers, or otherwise. In someexamples, data center 102 is an enterprise or internal data center.

In these examples, data center 102 includes a set of storage systems andapplication servers 110A-110N (servers 110) interconnected via Internetprotocol (IP) fabric 118, which may comprise a fabric provided by one ormore tiers of physical network devices, such as, for example, routers,gateways, switches, hubs, modems, bridges, repeaters, multiplexers,servers, virtual machines running on one or more of the same, and otherexample network devices. In the examples shown, IP fabric 118 includestwo tiers of nodes: spine nodes 104A and 104B (spine nodes 104) and leafnodes 108A-108N (leaf nodes 108). Servers 110 provide execution andstorage environments for applications and data associated with customersvia customer devices 120 and may be physical servers, virtual machinesor combinations thereof.

In the examples shown in FIGS. 1A and 1B, IP fabric 118 includes twotiers of nodes: spine nodes 104A and 104B (spine nodes 104) and leafnodes 108A-108N (leaf nodes 108). Other topologies may be used in otherexamples. Servers 110 provide execution and storage environments forapplications and data associated with customers via customer devices 120and may be physical servers, virtual machines or combinations thereof.

In general, IP fabric 118 represents layer two (L2) and layer three (L3)switching and routing components that provide point-to-pointconnectivity between servers 110. In one example, IP fabric 118comprises a set of interconnected, high-performance yet off-the-shelfpacket-based routers and switches that implement industry standardprotocols. In one example, IP fabric 118 may comprise off-the-shelfcomponents that provide Internet Protocol (IP) point-to-pointconnectivity. In some multi-staged networks such as IP fabric 118, eachswitch resides in a defined layer of the network. As shown in theexample of FIG. 1, spine nodes 104 reside in a first, top layer 122A andleaf nodes 108 reside in a second layer 122B (collectively, “networklayers 122”). As shown in the examples of FIGS. 1A and 1B, each of spinenodes 104 is communicatively coupled to each of leaf nodes 108A-108N.

In general, IP fabric 118 represents layer two (L2) and layer three (L3)switching and routing components that provide point-to-pointconnectivity between servers 110. In one example, IP fabric 118comprises a set of interconnected, high-performance yet off-the-shelfpacket-based routers and switches that implement industry standardprotocols. In one example, IP fabric 118 may comprise off-the-shelfcomponents that provide Internet Protocol (IP) point-to-pointconnectivity.

In one example approach, IP fabric 118 is configured as a multi-stagenetwork. Multi-stage data center networks, such as Clos or networks witha so-called “fat tree” topology, may be used in data centers for highperformance and resiliency. In some example approaches, fat treenetworks may allow for multi-pathing.

In one example approach, IP fabric 118 includes a Virtual Chassis Fabric(VCF). VCF may be used to provide a low-latency, high-performance fabricarchitecture that can be managed as a single device. A VCF isconstructed using a spine-and-leaf architecture. In the spine-and-leafarchitecture, each spine device is interconnected to one or more leafdevices. A VCF may support up to twenty total devices, and up to fourdevices may be configured as spine devices.

In one such example approach, a VCF is configured to allow path weightsthat reflect and react to a path's end-to-end bandwidth. Such acapability is termed “smart trunks” in VCF. Smart trunks capabilitiesmay, in some example approaches, be enabled by a Virtual Chassis ControlProtocol (VCCP) that runs inside a VCF to provide globally optimizedweights on the multi-paths.

In one example approach, IP fabric 118 is a loosely-federated foldedmulti-stage network where all nodes of IP fabric 118 run IP routingprotocols. The routing protocols, which may include, for example,external border gateway protocol (EBGP), include all paths between leafnodes 108 in IP fabric 118, and equal cost multipath (ECMP) is used toutilize all paths. The Routing in Fat Trees (RIFT) protocol allows useof any set of all available least-hops paths disregarding ECMPconstraints. Additional information regarding RIFT can be found inInternet-Draft entitled RIFT: Routing in Fat Trees(draft-ietf-rift-rift-01), dated Apr. 26, 2018, as promulgated by theInternet Engineering Task Force (IETF), which is incorporated herein byreference.

In FIGS. 1A and 1B, network controller 114 provides a high-levelcontroller for configuring and managing routing and switchinginfrastructure of data center 102. Network controller 114 may represent,for example, a software defined network (SDN) controller thatcommunicates and manages the devices of data center 102 using an SDNprotocol, such as the Path Computation Element (PCE) CommunicationProtocol (PCEP). In some examples, network controller 114 maycommunicate and manage the devices of data center 102 using eXtensibleMessaging and Presence Protocol (XMPP), PCEP or Border Gateway Protocolmessages. Additionally, or alternatively, network controller 114 maycommunicate with the routing and switching infrastructure of data center102 using other interface types, such as a Simple Network ManagementProtocol (SNMP) interface, path computation element protocol (PCEP)interface, a Device Management Interface (DMI), a CLI, Interface to theRouting System (IRS), or any other node configuration interface.

Network controller 114 provides a logically—and in some cases,physically—centralized controller for facilitating operation of one ormore networks within data center 102 in accordance with examples of thisdisclosure. In some examples, network controller 114 may operate inresponse to configuration input received from network administrator 112.Additional information regarding network controller 114 operating inconjunction with other devices of data center 102 can be found inInternational Application Number PCT/US2013/044378, filed Jun. 5, 2013,and entitled PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKETFLOWS, which is hereby incorporated by reference.

In one example approach, as illustrated in FIG. 1A, network controller114 communicates with each node 104, 108 through a role allocator 116.In one such example approach, each role allocator 116 includes amanagement link 128 to a management port P on each node 104, 108. Theport may be a dedicated management port, or it may just be a portdedicated to management. Management port P on each node 104, 108 is usedto configure and manage the node 104, 108. In one example approach, roleallocator 116 is a switch with ports designated as dedicated to spinenodes 104 and ports designated as dedicated to leaf nodes 108. In suchan example approach, a node 104, 108 may be assigned its role byattaching port P of the node through link 128 to one of the dedicatedspine ports of role allocator 116 or to one of the dedicated leaf portsof role allocator 116. Any router or switch connected through managementlink 128 to the dedicated spine ports of role allocator 116 is assumedto be a spine node 104 while any router or switch connected throughmanagement link 128 to the dedicated leaf ports of role allocator 116 isassumed to be a leaf node 108.

In another example approach, each role type has a different roleallocator. In one such example approach, as is illustrated in FIG. 1B,role allocator 116 includes a spine allocator 124 and a leaf allocator126. Any router or switch connected through management link 128 to spineallocator 124 is assumed to be a spine node 104 while any router orswitch connected through management link 128 to leaf allocator 126 isassumed to be a leaf node 108.

Although not shown, data center 102 may also include one or moreadditional switches, routers, hubs, gateways, security devices such asfirewalls, intrusion detection, and/or intrusion prevention devices,computer terminals, laptops, printers, databases, wireless mobiledevices such as cellular phones or personal digital assistants, wirelessaccess points, bridges, cable modems, application accelerators, or othernetwork devices.

In general, network traffic within IP fabric 118, such as packet flowsbetween servers 110, may traverse the physical network of IP fabric 118using many different physical paths. For example, a “packet flow” can bedefined by values used in a header of a packet, such as the network“five-tuple,” i.e., a source IP address, destination IP address, sourceport and destination port that are used to route packets through thephysical network, and a communication protocol. For example, theprotocol specifies the communications protocol, such as TCP or UDP, andSource port and Destination port refer to source and destination portsof the connection. A set of one or more packet data units (PDUs) thatmatch a particular flow entry represent a flow. Flows may be broadlyclassified using any parameter of a PDU, such as source and destinationdata link (e.g., MAC) and network (e.g., IP) addresses, a Virtual LocalArea Network (VLAN) tag, transport layer information, a MultiprotocolLabel Switching (MPLS) or Generalized MPLS (GMPLS) label, and an ingressport of a network device receiving the flow. For example, a flow may beall PDUs transmitted in a Transmission Control Protocol (TCP)connection, all PDUs sourced by a particular MAC address or IP address,all PDUs having the same VLAN tag, or all PDUs received at the sameswitch port.

FIG. 2 is a block diagram illustrating an example of a router 270capable of automatic role discovery and configuration, in accordancewith techniques of the disclosure. In one example, a role determinationprocess 280 may operate as a submodule of routing protocol 258. Forpurposes of illustration, example router 270 may be described in thecontext of network 100 and may represent an example instance of nodes104, 108 of FIGS. 1A and 1B.

In one example approach, router 270 includes a control unit 232 andinterface cards 236A-236N (“IFCs 236”) coupled to control unit 232 viainternal links 242A-242N. Control unit 232 may comprise one or moreprocessors (not shown in FIG. 2) that execute software instructions,such as those used to define one or more software or computer programs,stored to a computer-readable storage medium (not shown in FIG. 2), suchas non-transitory computer-readable media. Non-transitorycomputer-readable media include storage devices (e.g., a disk drive, oran optical drive) and memory (such as Flash memory, random access memoryor RAM) and may be used to store instructions to cause the one or moreprocessors to perform the techniques described herein. Alternatively, oradditionally, control unit 232 may comprise dedicated hardware, such asone or more integrated circuits, one or more Application SpecificIntegrated Circuits (ASICs), one or more Application Specific SpecialProcessors (ASSPs), one or more Field Programmable Gate Arrays (FPGAs),or any combination of one or more of the foregoing examples of dedicatedhardware, for performing the techniques described herein.

In this example, control unit 232 is divided into two logical orphysical “planes” to include a first control or routing plane 234A(“control plane 234A”) and a second data or forwarding plane 234B (“dataplane 234B”). That is, control unit 232 implements two separatefunctionalities, e.g., the routing/control and forwarding/datafunctionalities, either logically, e.g., as separate software instancesexecuting on the same set of hardware components, or physically, e.g.,as separate physical dedicated hardware components that eitherstatically implement the functionality in hardware or dynamicallyexecute software or a computer program to implement the functionality.

Control plane 234A represents hardware or a combination of hardware andsoftware of control unit 232 that define control plane functionality ofrouter 270. Control plane 234A manages and controls the behavior ofrouter 270, including the behavior of data plane 234B. Operating system264 of control plane 234A provides a run-time environment for multipledifferent processes. Operating system 264 may represent, for example, aUNIX operating system derivative such as Linux or Berkeley SoftwareDistribution (BSD). Operating system 264 offers libraries and drivers bywhich processes may interact with data plane 234B, for example, or otherhardware of router 270, including a file-system, storage device(s), andmain memory for router 270. Libraries and drivers of operating system264 may include Application Programming Interfaces (APIs) that providestandard interfaces for developers to invoke the functionality ofoperating system 264 and router 270 exposed by the libraries anddrivers.

Control plane 234A executes one or more processes. Routing protocolprocess 244 (“RP module 244”) represents a routing protocol process thatexecutes one or more routing protocols 258 by which at least some of therouting information stored to one or more routing tables 260 may bedetermined. For example, routing protocols 258 may include the RIFTprotocol. Routing tables 260 represent a data structure for storingrouting information and may represent tables, lists, trees/tries, orother data structures. A routing table may alternatively be referred toas a routing information base or may alternatively be considered a datastructure within the routing information base of the router 270.

Routing tables 260 stored to a computer-readable storage device ofcontrol unit 232 (not shown in FIG. 2) may include information definingat least a portion of a network topology of a network, such as IP fabric118 of FIGS. 1A and 1B. Each of routing tables 260 may be associatedwith a different address family or network layer protocol, such asunicast or multicast IPv4 and IPv6, and MPLS. Any one or more of routingtables 260 may be predefined by the routing protocol process 244 or maybe explicitly created by an administrator 112 using configurationinterface 273 or by network controller 114 using application programminginterface (API) 276. In the example approach of FIG. 2, networkcontroller 114 communicates with API 276 through allocator 116 viamanagement link 128. In some such example approaches, allocator 116 is aswitch or router connected to a management port P via management link128 as described above in the discussion of FIGS. 1A and 1B. Router 270receives configuration data via the configuration interface 273 or API276 and stores the configuration data to configuration database 265.

Configuration interface 273 is a process executing on control plane 234Bthat provides an interface by which administrator 112, a networkoperator or network management system for instance, may modify theconfiguration database 265 of router 270 (typically through managementlink 128). Configuration interface 273 may present a Command LineInterface (CLI) and/or a graphical user interface (GUI) by which anadministrator or other management entity may modify the configuration ofrouter 270 using text-based commands and/or graphical interactions,respectively. In addition, or in the alterative, configuration interface273 may present an agent that receives Simple Network ManagementProtocol (SNMP), Border Gateway Protocol messages, or Netconf commandsfrom a management device to set and retrieve configuration informationin configuration database 265 for router 270.

Application programming interface (API) 276, in the illustrated example,is a communications interface by which a network controller 114 maymodify the configuration database 265 or modify any of routing tables260. Network controller 114 may represent a network management system, asoftware-defined networking (SDN) controller, and/or orchestrationsystem. API 276 may be a HTTP-based RESTful interface using JavaScriptObject Notation (JSON) or eXtensible Markup Language data objects forexchanging configuration data and routing information between thenetwork controller 114 and the router 270. API 276 may include anothertype of API, such as a Remote Procedure Call (RPC) based API.

Routing protocol process 244 resolves the topology defined by routinginformation in routing tables 260 to select and/or determine one or moreactive routes through the network. Routing protocol process 244 may thensynchronize data plane 234B with these active routes, where data plane234B maintains a representation of these routes as forwarding table 266(alternatively, “forwarding information base (FIB) 266”). Routingprotocol process 244 may generate forwarding table 266 in the form of aradix or other lookup tree to map packet information (e.g., headerinformation having destination information and/or a label stack) to nexthops and ultimately to interface ports of IFCs 236. The operating system264 kernel may maintain a master copy of the forwarding table 266 andinstall portions of the master copy to forwarding components of dataplane 234B, such as packet forwarding engines.

Forwarding or data plane 234B represents hardware or a combination ofhardware and software of control unit 232 that forwards network trafficin accordance with forwarding table 266. Data plane 234B may include oneor more forwarding units that each includes, for example, one or morepacket forwarding engines (“PFEs”) each coupled to one or more interfacecards. A forwarding unit may each represent, for example, a dense portconcentrator (DPC), modular port concentrator (MPC), flexible physicalinterface card (PIC) concentrator (FPC), or another line card, forinstance, that is insertable within a router 270 chassis or combinationof chassis.

In accordance with techniques of this disclosure, the various routers270 in the IP fabric 118 may execute the role determination process 280at various times, such as during device startup, when joining fabric118, during fabric reconfiguration, periodically, continuously, orotherwise. Router 270 maintains its own router settings 282, such asrole settings (e.g., spine or leaf settings (e.g., selfattribute.isSpine, self.attribute.Leaf2LeafProcedures,self.capabilities.leaf_to_leaf_procedures). During operation, router 270may, in addition, receive various settings information from neighborrouters, such as level information (e.g., neighbor.level) or settingsinformation (e.g., neighbor.capabilities.leaf_to_leaf_procedures).Router 270 may communicate with neighbors through, for example, IFCs 236across links connected to any one of the IFCs 236. Once router 270 has aconfigured role, the router may then form adjacencies with its neighborrouters, thereby allowing router 270 to participate in various routingfunctionalities such as, for example, transmitting distance vectors forroutes to lower neighbors or passing link state information to higherneighbors.

Distance vectors, or distance vector routing information, may includeinformation about the routing table of router 270. Link stateinformation may include connectivity-related information obtained by oneor more link-state algorithms (e.g., a shortest path first algorithm),i.e., information about the neighbor routers of router 270. Routingprotocol process 244 may operate according to properties of a modifiedlink-state routing protocol (e.g., J. Moy, OSPF Version 2, RFC 2328,April 1998; and D. Oran, OSI IS-IS Intra-domain Routing Protocol, RFC1142, February 1990) when sending routing information to an ascendingneighbor and may operate according to properties of a path-vectorprotocol (e.g., Y. Rekhter, A Border Gateway Protocol 4 (BGP-4), RFC4271, January 2006) when sending routing information to a descendingneighbor. The entire contents of RFC 2328, RFC 1142, and RFC 4271 areincorporated by reference herein.

FIG. 3 is a flowchart illustrating an example method 300 for deployingnetwork devices in an IP fabric 118 according to the techniques of thisdisclosure. The method of FIG. 3 is explained with respect to router 270of FIG. 2 and networks 100 of FIGS. 1A and 1B. However, other networkdevices (e.g., switches or other routers) may perform this or asubstantially similar method. Moreover, the method of FIG. 3 need notnecessarily be performed in the order shown.

As noted above, manual intervention to assign routers 270 to the role ofspine or leaf can lead to misconfiguration. To counter this, as notedabove, a role allocator 116 is deployed and connects to each of thenetwork devices (nodes 104, 108) in IP fabric 118 via the managementlinks 128 of a management network as shown in FIGS. 1A, 1B, and 2. Roleallocator 116 may be a simple switch in which the lower (or upper) portsare designated as leaf ports and the upper (or lower) ports aredesignated as spine ports. In a larger deployment two switches may bedeployed; one for spines and the other for leaves, such as shown in FIG.1B. When network controller 114 discovers a new device, by virtue of itsconnectivity to the appropriate allocator, controller 114 automaticallyassigns the appropriate role and hence pushes the appropriateconfiguration to the device. In some examples, introducing such roleallocator function into the management network may provide a powerfulautomation mechanism to reduce manual interventions and possiblemisconfiguration.

In one example approach, ports of allocator 116 are designated as spinenode connections (302). Other ports of allocator 116 are designated asleaf node connections (304). Network devices being deployed into an IPfabric 118 are connected through management ports to ports of allocator116 that match their roles (306). For instance, network devices that arebeing deployed as leaf nodes are connected to leaf node connection portsof allocator 116 while network devices that are being deployed as spinenodes are connected to spine node connection ports of allocator 116.

When a network device deployed to IP fabric 118 powers up, an attempt ismade to discover if the device is connected to a spine node connectionport of allocator 116 or a leaf node connection port of allocator 116(308). If the device is connected to a spine node connection port ofallocator 116 (YES at 308), the device is a spine node and it isconfigured accordingly (310). If the device is not connected to a spinenode connection port of allocator 116 (NO at 308), the device is a leafnode and it is configured accordingly (312).

FIG. 4 is a flowchart illustrating an example method 350 forautomatically determining role information for network devices in an IPfabric 118 according to the techniques of this disclosure. The method ofFIG. 4 is explained with respect to router 270 of FIG. 2 and networks100 of FIGS. 1A and 1B. However, other network devices (e.g., switchesor other routers) may perform this or a substantially similar method.Moreover, the method of FIG. 4 need not necessarily be performed in theorder shown.

Initially, one or more role allocators 116 are configured for service(352). In one example approach, particular ports of a switch designatedas role allocator 116 are designated as spine ports while others aredesignated as leaf ports. In some example approaches, as discussed inthe description of FIGS. 1A, 1B and 2 above, nodes 104 and 108 areautomatically assigned to their appropriate roles within the networktopology based on their connection to allocator 116.

In one example approach, the ports of the switch designated as roleallocator 116 are split in half, with the lowered number ports beingdesignated as spine ports and the upper-number ports being designated asleaf ports. In another such approach, the ports are split in half, withthe lowered number ports being designated as leaf ports and theupper-number ports being designated as spine ports. Ports may bedesignated as spine or leaf by other mechanism as well (e.g., even/oddports). In addition, the management port connections on allocators 116may be split in other ways (e.g., the lowest quarter or highest quarterports could be designated as spine node port connections, with theremainder are designated as leaf node port connections).

In one such example approach, each router 270 is connected via itsmanagement port P to a port of an allocator 116 (354). As illustrated inFIG. 1A, devices 104, 108 within IP fabric 118 automatically areassigned to their network layer 120 level within the network topology(e.g., IP fabric 118) based on information received from role allocator116. In one such example approach, a router 270 with an unknown rolederives its own role by querying an attached role allocator 116, or byquerying a dedicated allocator 124, 126 within role allocator 116 (356).In one such approach, each router 270 includes information detailing theports on allocator 116 that are designated as spine node ports and theports on allocator 116 that are designated as leaf node ports. Inaddition, each router 270 includes program code allowing the router 270to determine the port on the allocator 116, 124, 126 to which it isconnected and to determine, based on the allocator port, whether it is aspine node or a leaf node. For instance, router 270 may use Link LayerDiscovery Protocol (LLDP) to begin receiving packets at management portP from management link 128. If the packet is from a port on allocator116 that is dedicated to spine nodes, the router 270 is a spine node. Ifthe packet is, however, from a port on allocator 116 that is dedicatedto leaf nodes, the router 270 is a leaf node. Router 270 is thenconfigured based on its determined role (358). In one example approach,once router 270 has determined that it is a spine node or a leaf node,router 270 reaches out to a server on the management network to retrievethe appropriate configuration information. In other words, in one suchexample where router 270 “reaches out to a server,” router 270 outputs asignal over a management network. The server, which is connected to themanagement network in this example, detects a signal over the managementnetwork and determines that the signal corresponds to a request forconfiguration information. The server outputs a responsive signal overthe management network. Router 270 detects the responsive signal anddetermines that the responsive signal includes appropriate configurationinformation. The server may, in some examples, be or include allocator116.

FIG. 5 is a flowchart illustrating another example method 400 forautomatically determining role information for network devices in an IPfabric 118 according to the techniques of this disclosure. In theexample approach of FIG. 5, a network controller 114 connected throughallocator 116 to a node 104, 108 determines the port on allocator 116 itis using to reach the node and configures the node as a spine or a nodeaccordingly. That is, if the management port of router 270 is attachedto a port of allocator 116 dedicated to spine nodes, the device is aspine node 104. If a management port is attached to a port of allocator116 dedicated to leaf nodes, the device is a leaf node 108.

In one example approach, one or more role allocators 116 are configuredfor service (402). Each router 270 is connected via a management port(or a port dedicated as a management port) to a port of an allocator 116(404). As illustrated in FIG. 1A, devices 104, 108 within IP fabric 118automatically are assigned to their network layer 120 level within thenetwork topology (e.g., IP fabric 118) based on information receivedfrom role allocator 116. As illustrated in FIG. 1B, devices 104, 108within IP fabric 118 automatically are assigned to their network layer120 level within the network topology (e.g., IP fabric 118) based oninformation received from spine allocator 124 or leaf allocator 126 ofrole allocator 116.

In one example approach, network controller 114 waits (NO at 406) todetect devices being added to IP fabric 118 (406). For instance, adevice added to IP fabric 118 may, when initialized, begin transmittingon management port P and/or through link interfaces 236. In one exampleapproach, a switch or router is mounted on a rack and powered up. Theswitch or router then reaches out through management link 128 toretrieve its IP address from the management network (e.g., via a DynamicHost Configuration Protocol (DHCP) server).

When a new device is detected (YES at 406), network controller 114determines its role (408). In one example approach, network controller114 determines the new device's role by determining the port onallocator 116 to which the new device is attached. If the port onallocator 116 is designated as dedicated to spine nodes, the networkcontroller 114 configures the new device as a spine node. If the port onallocator 116 is designated as dedicated to leaf nodes, the networkcontroller 114 configures the new device as a leaf node. The new deviceis then configured based on its determined role (410).

In a like manner, if network controller 114 determines the new device isattached to a spine allocator 124, the network controller 114 configuresthe new device as a spine node. If network controller 114 determines thenew device is attached to a leaf allocator 126, the network controller114 configures the new device as a leaf node. Again, the new device isconfigured based on its determined role (410).

The techniques of this disclosure may provide one or more technicaladvantages over prior protocols. For example, the techniques of thisdisclosure may avoid the requirement for network administrators 112 tomanually configure various parameters for each switch, such as definingeach level 120 for each switch during configuration of the IP fabric 118or the individual nodes 104, 108 that make up the IP fabric 118 (e.g.,spine nodes 104, leaf nodes 108). This may avoid configuration errorsand administrative burden on network administrators. Some exampletechniques allow administrators to network connect in-band to neighbordevices within the fabric prior to certain aspects of configuration ofthose devices, thereby avoiding the need to connect those devices to anout-of-band network.

The techniques described in this disclosure may be implemented, at leastin part, in hardware, software, firmware or any combination thereof. Forexample, various aspects of the described techniques may be implementedwithin one or more processors, including one or more microprocessors,digital signal processors (DSPs), application specific integratedcircuits (ASICs), field programmable gate arrays (FPGAs), or any otherequivalent integrated or discrete logic circuitry, as well as anycombinations of such components. The term “processor” or “processingcircuitry” may generally refer to any of the foregoing logic circuitry,alone or in combination with other logic circuitry, or any otherequivalent circuitry. A control unit comprising hardware may alsoperform one or more of the techniques of this disclosure.

Such hardware, software, and firmware may be implemented within the samedevice or within separate devices to support the various operations andfunctions described in this disclosure. In addition, any of thedescribed units, modules or components may be implemented together orseparately as discrete but interoperable logic devices. Depiction ofdifferent features as modules or units is intended to highlightdifferent functional aspects and does not necessarily imply that suchmodules or units must be realized by separate hardware or softwarecomponents. Rather, functionality associated with one or more modules orunits may be performed by separate hardware or software components, orintegrated within common or separate hardware or software components.

The techniques described in this disclosure may also be embodied orencoded in a computer-readable medium, such as a computer-readablestorage medium, containing instructions. Instructions embedded orencoded in a computer-readable medium may cause a programmableprocessor, or other processor, to perform the method, e.g., when theinstructions are executed. Computer-readable media may includenon-transitory computer-readable storage media and transientcommunication media. Computer readable storage media, which is tangibleand non-transitory, may include random access memory (RAM), read onlymemory (ROM), programmable read only memory (PROM), erasableprogrammable read only memory (EPROM), electronically erasableprogrammable read only memory (EEPROM), flash memory, a hard disk, aCD-ROM, a floppy disk, a cassette, magnetic media, optical media, orother computer-readable storage media. The term “computer-readablestorage media” refers to physical storage media, and not signals,carrier waves, or other transient media.

What is claimed is:
 1. A network device comprising: a plurality ofnetwork ports, each of the network ports capable of being coupled to afabric; and processing circuitry configured to: establish a networkconnection through the fabric to one of a plurality of role allocatorports of a role allocator, identify a role allocator port to which thenetwork device is connected over the network connection, and configurethe network device based on the identified role allocator port.
 2. Thenetwork device of claim 1, wherein to configure the network device basedon the identified role allocator port, the processing circuitry isfurther configured to: retrieve configuration information for thenetwork device over the fabric.
 3. The network device of claim 1,wherein the plurality of role allocator ports includes: a first subsetof ports designated as first level port connections and a second subsetof ports designated as second level port connections.
 4. The networkdevice of claim 3, wherein to configure the network device based on theidentified role allocator port, the processing circuitry is furtherconfigured to: determine that the identified role allocator port is afirst level port; and configure the network device as a first leveldevice.
 5. The network device of claim 4, wherein configuring thenetwork device as a first level device includes: configuring the networkdevice as a spine node.
 6. The network device of claim 3, wherein toconfigure the network device based on the identified role allocatorport, the processing circuitry is further configured to: determine thatthe identified role allocator port is a second level port; and configurethe network device as a second level device.
 7. The network device ofclaim 6, wherein configuring the network device as a second level deviceincludes: configuring the network device as a leaf node.
 8. The networkdevice of claim 1, wherein to establish the network connection throughthe fabric, the processing circuitry is further configured to: establishthe network connection through a management network included within thefabric.
 9. The network device of claim 8, wherein to identify the roleallocator port, the processing circuitry is further configured to:determine, via a packet received over the management network, a portnumber assigned to the port of the role allocator to which the deployednetwork device is attached.
 10. The network device of claim 9, whereinto identify the role allocator port, the processing circuitry is furtherconfigured to: determine, based on the port number, whether the deployednetwork device is attached to a first level port connection or a secondlevel port.
 11. The network device of claim 9, wherein to identify therole allocator port, the processing circuitry is further configured to:determine, based on the port number, whether the deployed network deviceis attached to a connection associated with a spine node or associatedwith a leaf node.
 12. A method comprising: deploying a network devicewithin a fabric having a management network by attaching a port of thedeployed network device through the management network to one of aplurality of ports of a role allocator; establishing a networkconnection through the fabric to one of a plurality of role allocatorports of a role allocator; identifying a role allocator port to whichthe network device is connected over the network connection; andconfiguring the network device based on the identified role allocatorport.
 13. The method of claim 12, wherein configuring the network devicebased on the identified role allocator port includes: retrievingconfiguration information for the network device over the fabric. 14.The method of claim 12, wherein the plurality of role allocator portsincludes: a first subset of ports designated as first level portconnections and a second subset of ports designated as second level portconnections.
 15. The method of claim 14, wherein configuring the networkdevice based on the identified role allocator port includes: determiningthat the identified role allocator port is a first level port; andconfiguring the network device as a first level device.
 16. The methodof claim 15, wherein configuring the network device as a first leveldevice includes: configuring the network device as a spine node.
 17. Themethod of claim 14, wherein configuring the network device based on theidentified role allocator port includes: determining that the identifiedrole allocator port is a second level port; and configuring the networkdevice as a second level device.
 18. The method of claim 17, whereinconfiguring the network device as a second level device includes:configuring the network device as a leaf node.
 19. The method of claim12, wherein establishing the network connection through the fabricincludes: establishing the network connection through the managementnetwork included within the fabric.
 20. A non-transitorycomputer-readable storage medium having stored thereon instructionsthat, when executed, cause a processor of a network device to: establisha network connection through a management network within a fabric to oneof a plurality of role allocator ports of a role allocator; identify arole allocator port to which the network device is connected over thenetwork connection; and configure the network device based on theidentified role allocator port.